package services

import (
	"encoding/json"
	"fmt"

	"github.com/sirupsen/logrus"
)

/*
//100	weekSwitch	//	星期开关     1字节8个位，1~7位分别代表星期一到星期日
//101	sprayLevel3	//	喷淋档位3    档（1字节）
//102	particleSize3	//	颗粒粗细3      %（1字节）
//103	startTime1	//	开启时间1   小时（1字节）
//104		//	开启时间1   分钟（1字节）
//105	sprayDuration1	//	喷淋时长1  分钟（1字节）
//106		//	喷淋时长1  秒（1字节）
//107	startTime2	//	开启时间2   小时（1字节）
//108		//	开启时间2   分钟（1字节）
//109	sprayDuration2	//	喷淋时长2  分钟（1字节）
//110		//	喷淋时长2  秒（1字节）
//111	startTime3	//	开启时间3   小时（1字节）
//112		//	开启时间3   分钟（1字节）
//113	sprayDuration3	//	喷淋时长3 分钟（1字节）
//114		//	喷淋时长3  秒（1字节）
//115	startTime4	//	开启时间4   小时（1字节）
//116		//	开启时间4   分钟（1字节）
//117	sprayDuration4	//	喷淋时长4  分钟（1字节）
//118		//	喷淋时长4  秒（1字节）
//119	startTime5	//	开启时间5   小时（1字节）
//120		//	开启时间5   分钟（1字节）
//121	sprayDuration5	//	喷淋时长5  分钟（1字节）
//122		//	喷淋时长5  秒（1字节）
*/
//解析喷淋控制时间2：SPK_CTRL_T2
func (d *DeviceData) ParseSpkCtrlT2Data() error {
	// 校验数据长度
	if len(d.RegisterData) < 23 {
		return fmt.Errorf("payload:%v data length is invalid", d.RegisterData)
	}
	// 喷淋控制时间2
	spkCtrlT2Params := SpkCtrlT2Params{
		WeekSwitch:     d.RegisterData[0],
		SprayLevel3:    d.RegisterData[1],
		ParticleSize3:  d.RegisterData[2],
		StartTime1:     fmt.Sprintf("%d|%d", d.RegisterData[3], d.RegisterData[4]),
		SprayDuration1: fmt.Sprintf("%d|%d", d.RegisterData[5], d.RegisterData[6]),
		StartTime2:     fmt.Sprintf("%d|%d", d.RegisterData[7], d.RegisterData[8]),
		SprayDuration2: fmt.Sprintf("%d|%d", d.RegisterData[9], d.RegisterData[10]),
		StartTime3:     fmt.Sprintf("%d|%d", d.RegisterData[11], d.RegisterData[12]),
		SprayDuration3: fmt.Sprintf("%d|%d", d.RegisterData[13], d.RegisterData[14]),
		StartTime4:     fmt.Sprintf("%d|%d", d.RegisterData[15], d.RegisterData[16]),
		SprayDuration4: fmt.Sprintf("%d|%d", d.RegisterData[17], d.RegisterData[18]),
		StartTime5:     fmt.Sprintf("%d|%d", d.RegisterData[19], d.RegisterData[20]),
		SprayDuration5: fmt.Sprintf("%d|%d", d.RegisterData[21], d.RegisterData[22]),
	}

	spkCtrlT2Event := SpkCtrlT2Event{
		Method: PayloadTypeMap[100],
		Params: spkCtrlT2Params,
	}
	logrus.Info("spkCtrlT2Event:", spkCtrlT2Event)
	//spkCtrlT2Event转json
	payload, err := json.Marshal(spkCtrlT2Event)
	if err != nil {
		return err
	}
	// 发送数据到平台
	err = PublishEvent(d.Mac, payload)
	if err != nil {
		return err
	}

	return nil
}
